package gob.osinerg.seguridad.action;

import gob.osinerg.emergencia.bean.ActividadBean;
import gob.osinerg.emergencia.bean.UnidadOperativaBean;
import gob.osinerg.emergencia.bean.UsuarioBean;
import gob.osinerg.seguridad.service.SeguridadService;

import java.util.ResourceBundle;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
 * 
 * @author Juan Omar H.
 */
public class IdentificarRutaPaginaAction extends Action {
	protected Logger log = Logger.getLogger(IdentificarRutaPaginaAction.class);
	private SeguridadService service;

	public org.apache.struts.action.ActionForward execute(
			ActionMapping actionMapping, ActionForm actionForm,
			HttpServletRequest request, HttpServletResponse response)
			throws java.lang.Exception {

		ActionForward forward = null;
		ActionErrors errors = null;
		UsuarioBean usuario = new UsuarioBean();
		UnidadOperativaBean unidadOperativa = new UnidadOperativaBean();

		HttpSession session = request.getSession(true);
		String idusuario = (String) request.getParameter("p_usuario");
		//String codigo = (String) request.getParameter("p_ruta");
		String codigo = (String) request.getParameter("p_pagina");
		/*****************************************************************/
		ResourceBundle rb = ResourceBundle.getBundle("gob.osinerg.resources.rutapagina");
		
		String path = rb.getString(codigo);
		
		forward = new ActionForward(path);
		
		session.removeAttribute("UsuarioBean");

		usuario = service.getUsuarioXCodigo(idusuario);

		UsuarioBean usuarioSesion = (UsuarioBean) session.getAttribute("UsuarioBean");
		if ((usuarioSesion == null)	|| !usuarioSesion.getUsuario().equals(usuario.getUsuario())) {
			String idUnidadOperativa = service.getIdUnidadOperativaIdByCodigoUsuario(usuario.getCodigoUsuario());
			//unidadOperativa = service.getUnidadOperativaXCodigoOsinerg(Integer.parseInt(idusuario.substring(0, idusuario.length() - 2)));
			unidadOperativa = service.getUnidadOperativoByUniopeId(idUnidadOperativa);
			String codDepartamentoUOPe = unidadOperativa.getUbigeoId();
			session.setAttribute("codDepartamentoUOPe", codDepartamentoUOPe);

			session.setAttribute("UnidadOperativaBean", unidadOperativa);
			if (unidadOperativa != null) {
				ActividadBean actividadBean = service
						.getActividaXUnidad(unidadOperativa.getCodigo());
				session.setAttribute("ActividadBean", actividadBean);
			} else {
				session.setAttribute("ActividadBean", new ActividadBean());
			}
			session.setAttribute("UsuarioBean", usuario);

		}

		return forward;
	}


	public void setService(SeguridadService service) {
		this.service = service;
	}
	
}